Skip to content

Add Shimmer3 board support (board id 68)#832

Draft
VigneshRajan-AMRC wants to merge 4 commits intobrainflow-dev:masterfrom
VigneshRajan-AMRC:shimmer3
Draft

Add Shimmer3 board support (board id 68)#832
VigneshRajan-AMRC wants to merge 4 commits intobrainflow-dev:masterfrom
VigneshRajan-AMRC:shimmer3

Conversation

@VigneshRajan-AMRC
Copy link
Copy Markdown

Adds native C++ driver for the Shimmer Sensing Shimmer3 device, communicating over Bluetooth SPP.

  • New board: BoardIds.SHIMMER3_BOARD (id 68)
  • Channels: 3-axis low-noise accel, gyro, magnetometer, GSR, ExG, battery, temperature
  • Calibration applied on-device readout; host-side timestamps
  • Configurable via config_board(): set_sampling_rate:<Hz>, set_sensors:<hex>

Driver is adapted from the seemoo-lab/pyshimmer Python library (GPL-3.0). This attribution is noted at the top of each ported file.

Tested on Windows with a Shimmer3 over Bluetooth SPP using the Python binding.

Shimmer3 Bluetooth SPP driver for BrainFlow, ported from the semoo-lab/pyshimmer Python library (GNU General Public License v3.0).

Includes protocol constants, channel definitions, calibration parsing, and the full Board interface implementation (prepare/start/stop/release/config).
Register Shimmer3 as a new board: board description JSON, board ID constant, CMakeLists integration and other necessary changes.
@Andrey1994
Copy link
Copy Markdown
Member

Hi, it looks good at the first sight. I will check more details in the next couple of days.

One concern I have - gpl license for these files, I am not 100% sure it doesnt conflict with MIT license in brainflow.

Also, I can update docs, website, etc, do you have images you want to use or any wishes what to highlight there?

@VigneshRajan-AMRC
Copy link
Copy Markdown
Author

Hi @Andrey1994 , thanks for looking into my PR.

I just looked into the GPL3 license terms and you were right to be concerned, it can't be merged into any other license. I assumed GPL3 was compatible with any open-source license, but I was wrong.

Anyways, I will spend the next few days reworking the Shimmer3 Cpp API from scratch using one of the ShimmerResearch published API repos. They all have 3-Clause BSD licenses and they can be merged into an MIT project as long as their llcense terms and owner are mentioned in the code header and probably in the readme too. So, that wouldn't affect the Brainflow MIT license.

Until then, could you please keep the 68 board ID blocked for the Shimmer3? You could possibly accept the changes to the boardids and boardshims in all the lang-packs, as they aren't affected by any licensing mismatch.

And thanks for offering to update the docs and website. I mainly created and tested this for the Shimmer3 GSR+ device but the API should be compatible with other Shimmer3/3R units as well. Here's the user-guide for the Shimmer3 GSR+ with relevant information for the docs. The pictures of the device are better from this site.

@VigneshRajan-AMRC VigneshRajan-AMRC marked this pull request as draft April 30, 2026 09:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants